package com.nuo.laboratory.SpringOrSpringBoot;


import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.stereotype.Component;

/**
 * SmartInitializingSingleton 当所有单例 bean 都初始化完成以后, Spring的IOC容器会回调该接口的 afterSingletonsInstantiated()方法
 * 此接口可以解决一些因为bean初始化太早而出现的错误和问题
 * 此接口是从Spring4.1版本开始使用的
 * 此接口可以作为InitializingBean接口的一种替代方案
 *
 * @author LGC
 * @date 2022/4/7 17:58
 */

@Slf4j
@Component
@AllArgsConstructor
public class MySmartInitializingSingleton implements SmartInitializingSingleton {
    // 注入其它依赖
//    private final RocketMQTemplate rocketMQTemplate;

    @Override
    public void afterSingletonsInstantiated() {
        log.info("SmartInitializingSingleton 执行");
        log.info("SmartInitializingSingleton 当所有单例 bean 都初始化完成以后,Spring的IOC容器会回调该接口的 afterSingletonsInstantiated()方法");
    }
}
